// 面向对象中的访问控制词

/*
        看几个关键词
        public         公开的，类外部、类内部、子类都可以使用
        protected   保护的，类内部、子类可以使用
        private        私有的   类内部可以使用
*/ 

class Demo{
    /*
        什么叫类内部呢？很简单，以Demo这个类为例，他后面的这对大括号就叫类内部
        所以你应该可以明白了，出了这对大括号就是类外部
    */ 
    public aa='aa';
    protected bb='bb';
    private cc='cc';

    show(){
        console.log(this.aa,this.bb,this.cc);
    }
}

let d = new Demo();
d.aa;//你会发现代码提示里d只有aa属性，这就是因为类外部只能访问public声明的属性，也就是aa

// 给Demo声明个子类
class DemoSon extends Demo{
    show(){
        // 你会发现代码提示里有aa和bb属性，因为cc是私有属性，所以不让访问
        console.log(this.aa,this.bb);
    }
}